/**
 * 通用的 AJAX 请求方法
 * @param {Object} options - 请求配置
 * @param {string} options.url - 请求地址
 * @param {string} [options.method='GET'] - 请求方法
 * @param {Object} [options.data={}] - 请求数据
 * @param {Object} [options.headers={}] - 请求头
 * @param {Function} [options.success] - 成功回调
 * @param {Function} [options.error] - 错误回调
 * @param {Function} [options.complete] - 完成回调
 * @returns {Promise} - 返回 Promise 对象
 */

const baseUrl = "https://get.215000.com"; //测试环境

function ajaxRequest(options) {
  const defaultOptions = {
    method: "GET",
    data: {},
    headers: {},
    dataType: "json",
    contentType: "application/json",
    cache: false,
  };

  const config = { ...defaultOptions, ...options };

  return new Promise((resolve, reject) => {
    headers = {
      "Content-Type": config.contentType,
    };
    $.ajax({
      url: baseUrl + config.url,
      method: config.method,
      // data: config.method === "GET" ? config.data : JSON.stringify(config.data),
      data: config.data,
      headers: config.headers,
      dataType: config.dataType,
      cache: config.cache,
      success: function (response) {
        if (config.success) {
          config.success(response);
        }
        resolve(response);
      },
      error: function (xhr, status, error) {
        console.error("AJAX请求失败:", {
          status: xhr.status,
          statusText: xhr.statusText,
          response: xhr.responseText,
        });

        if (config.error) {
          config.error(xhr, status, error);
        }
        reject({ xhr, status, error });
      },
      complete: function (xhr, status) {
        if (config.complete) {
          config.complete(xhr, status);
        }
      },
    });
  });
}

// ajaxRequest({
//     url: '/api/data',
//     method: 'POST',
//     data: { name: 'John', age: 30 },
//     headers: { Authorization: 'Bearer token' },
//     success: function(response) {
//         console.log('请求成功:', response);
//     },
//     error: function(xhr, status, error) {
//         console.error('请求失败:', error);
//     }
// })
